Sistema de Nombrado en Java (JNDI) [Parte I]

JNDI es un interface gen�rico. Para acceder a cualquier servicio de nombres/directorios, debemos especificar el proveedor de servicio a utilizar. Esto es s�lo una parte de la informaci�n de configuraci�n. Dependiendo del servicio de nombres/directorio y del proveedor de servicios podr�amos necesitar especificar otra informaci�n de configuraci�n, por ejemplo, decirle al proveedor de servicios que servidor utilizar. Especificamos la informacion de configuraci�n en el JNDI usando propiedades de entorno. Aunque esta secci�n describe muchas propiedades de entorno, en general s�lo necesitaremos usar una pocas.

Aqu� tenemos los distintos tipos de propiedades de entorno, categorizadas por su �mbito y aplicabilidad.

.�Propiedades Est�ndar de Entorno JNDI

El JNDI define propiedades de entorno que son est�ndars para todos los proveedores de servicios. No todas las propiedades est�ndars se pueden aplicar a todos los proveedores de servicios. Pero cuando un proveedor de servicios usa una de estas propiedades, debe interpretarla de acuerdo a la definici�n especificada por el JNDI.

Estas propiedades tienen el prefijo "java.naming." Los interfaces Context y LdapContext declaran constantes para estas propiedades. Aqu� tenemos una lista de las propiedades est�ndars de entorno JNDI.

Property Name Description
java.naming.applet Un ejemplar de java.applet.Applet. Los par�metros de este ejemplar de applet se usan como ciertas propiedades de entono. Ver la siguiente secci�n para m�s detalles.

Constante: Context.APPLET

Default: Niinguno.

java.naming.authoritative Un string ("true" o "false") que especifica la fuente autoritaria del servicio solicitado. Si seleccionamos esta propiedad a "true", cuando le solicitamos al proveedor de servicio la fuente de servicio m�s autoritaria (como un servidor maestro). De otra forma, la fuente, no tiene (pero puede ser) autoritaria.

Constante: Context.AUTHORITATIVE

Default: "false"

java.naming.batchsize La representaci�n string de un entero que especifica el tama�o del cach� preferido a utilizar cuando se devuelven datos mediante el protocolo del servicio. Puedes ir a la lecci�n B�squedas para ver m�s detalles y ejemplos.

Constante: Context.BATCHSIZE

Default: Valor por defecto del proveedor.

Ejemplo: "10"

java.naming.dns.url Un string URL que especifica los nombres del host DNS y de dominio a usar para la implementaci�n del contexto "jndi".

Constante: Context.DNS_URL

Default: Ninguna.

Ejemplo: "dns://dnsserver/wiz.com"

java.naming.factory.control Una lista separa por dos puntos de nombres de clases de factor�as de control. Cada clase debe implementar el interface ControlFactory.

Esta propiedad la usa ControlFactory.getControlInstance(), que a su vez es usado por los proveedores de servicos. Puedes ir a la lecci�n Controles y Extensiones� para ver m�s detalles.

Constante: LdapContext.CONTROL_FACTORIES

Default: La lista vac�a.

Ejemplo: "com.wiz.jndi.ldap.ControlFactory: vendorX.ldap.VendorXControlFactory"

java.naming.factory.initial Nombre de la clase de la factor�a de contexto inicial. La clase debe implementar el interface InitialContextFactory.

Esta clase es ejemplarizada por el constructor de InitialContext.

Debemos configurar esta propiedad, a menos que s�lo queramos pasar nombres URL a los m�todos de InitialContext.

Constante: Context.INITIAL_CONTEXT_FACTORY

Default: Ninguno.

Ejemplo: "com.sun.jndi.ldap.LdapCtxFactory"

java.naming.factory.object Una lista separada por dos puntos de nombres de clases Factor�as de objetos. Cada clase debe implementar los interfaces ObjectFactory o DirObjectFactory.

Esta propiedad la usan� NamingManager.getObjectInstance() y DirectoryManager.getObjectInstance(), que su vez son usados por los proveedores de servicio. Puedes ir a la secci�n Objetos Java Objects y el Directorio para ver m�s detalles.

Constante: Context.OBJECT_FACTORIES

Default: La lista vac�a.

Ejemplo: "com.wiz.jndi.ldap.AttrsToRemote: com.wiz.jndi.ldap.AttrsToCorba"

java.naming.factory.state Una lista separada por dos puntos de nombres de clases de factor�as de estado. Cada clase debe implementar los intefaces StateFactory o DirStateFactory.

Esta propiedad la usan NamingManager.getStateToBind() y DirectoryManager.getStateToBind(), que a su vez es usada por el proveedor del servicio. Puedes ir a la secci�n Objetos Java y el Directorio para ver m�s detalles.

Constante: Context.STATE_FACTORIES

Default: La lista vac�a.

Ejemplo: "com.wiz.jndi.ldap.RemoteToAttrs:com.wiz.jndi.ldap.CorbaToAttrs"

java.naming.factory.url.pkgs Una lista separada por dos puntos de prefijos de paquetes de factor�as de contexto URL. El prefijo consiste en la id del esquema URL y un sufijo para construir el nombre de la clase, de esta forma.

prefix.schemeId.schemeIdURLContextFactory Por ejemplo, supongamos que el prefijo es "vendorZ.jndi" y la id del esquema URL es "ldap", el nombre completo de la clase es vendorZ.jndi.ldap.ldapURLContextFactory. Cada clase cuyo nombre se construya de esta forma debe implementar los interfaces� ObjectFactory o DirObjectFactory y seguir las reglas de procesamiento de nombres URL. El prefijo del paquete "com.sun.jndi.url" siempre se a�ade al final de la lista especificada para esta propiedad. Esta propiedad se usa cuando un nombre de URL se pasa a los m�todos InitialContext.

Puedes ir a la lecci�n URL para ver m�s informaci�n.

Constante: Context.URL_PKG_PREFIXES

Default: La lista vac�a.

Ejemplo: com.wiz.jndi.url:vendorZ.jndi

java.naming.language Un string que especifica el idioma preferido para usarlo con este servicio.

Los valores de est� propiedad est�n definidos por la RFC 1766.

Constante: Context.LANGUAGE

Default: El valor por defecto del proveedor.

Ejemplo: "en-US"

java.naming.provider.url Una string URL para configurar el proveedor de servicio especificado por la propiedad "java.naming.factory.initial".

Constante: Context.PROVIDER_URL

Default: El valor por defecto del proveedor.

Ejemplo: "ldap://localhost:389/o=JNDITutorial"

java.naming.referral Un string que especifica c�mo deber�a manejar las referencias el proveedor de servicio, una de "throw", "ignore", o "follow". Puedes ir a la lecci�n Referencias para ver detalles y ejemplos.

Constante: Context.REFERRAL

Default: El valor por defecto del proveedor.

Ejemplo: "throw"

java.naming.security.authentication Un string que especifica el tipo de autentifiaci�n a utilizar; uno de "none", "simple", "strong", un string espec�fico del proveedor. Puedes ir a la lecci�n Seguridad para ver m�s detalles y ejemplos.

Constante: Context.SECURITY_AUTHENTICATION

Default: El valor por defecto del proveedor.

Ejemplo: "simple"

java.naming.security.credentials Un objeto que espeifica las credenciales de la entidad que realiza la autentificaci�n. Su tipo est� determinado por el proveedor de servicios.

Puedes ir a la lecci�n Seguridad para ver m�s detalles y ejemplos.

Constante: Context.SECURITY_CREDENTIALS

Default: El valor por defecto del proveedor.

Ejemplo: Un char[] que contenga "secret."

java.naming.security.principal Un string que especifica la identidad que realiza la autentificaci�n.

Puedes ir a la lecci�n Seguridad para ver m�s detalles y ejemplos.

Constante: Context.SECURITY_PRINCIPAL

Default: El valor por defecto del proveedor.

Ejemplo: "cn=Directory Manager, o=JNDITutorial"

java.naming.security.protocol Un string que especifica el protocolo de seguridad a utilizar. Puedes ir a la lecci�n Seguridad para ver m�s detalles y ejemplos.

Constante: Context.SECURITY_PROTOCOL

Default: El valor por defecto del proveedor.

Ejemplo: "ssl"1

.�Propiedades de Entorno Espec�ficas del Servicio

Las propiedades de entorno espec�ficas del servicio son comunes entre diferentes proveedores de servicio que implementan un protocolo o servicio particular. Por ejemplo, varios proveedores de servicios diferentes podr�an implementar LDAP. Estos proveedores usar�an propiedades de entorno espec�ficas de LDAP.

Las propiedades espec�ficas del servicio tienen el prefijo "java.naming.servicio." Por ejemplo, las propiedades espec�ficas de LDAP tienen el prefijo "java.naming.ldap." y las propiedades espec�ficas CORBA tienen el prefijo "java.naming.corba." Observa que estas son propiedades de entorno relacionadas con el JNDI y son usadas por los proveedores de servicios JNDI. Un servicio o subsistema como CORBA o RMI podr�a definir otras propiedades no relacionadas con el JNDI.

Puedes ir a la lecci�n Miscel�nea para ver ejemplos de propiedades de entorno espec�ficas de LDAP.

.�Propiedades de Entorno Espec�ficas de la Caracter�stica

Las propiedades de entorno espec�ficas de la caracter�stica son comunes a todos los proveedores de servicios que implementan una caracter�stica particular. Por ejemplo, el proveedor de servicio LDAP y un proveedor de servicio VendorX podr�an usar SASL para autentificaci�n. Estos proveedores usar�n propiedades de entorno espec�ficas de SASL cuando configuren esta caracter�stica.

Estas propiedades tienen el prefijo "java.naming.caracter�stica." Por ejemplo, las propiedades espec�ficas de SASL tienen el prefijo "java.naming.security.sasl." Observa que estas son propiedades de entorno relacionadas con el JNDI y usadas por los proveedores de servicios JNDI. Una caracter�stica o subsistema como SASL podr�a definir otras propiedades no relacionadas con el JNDI. Puedes ir a la lecci�n Seguridad para ver algunos ejemplos de propiedades espec�ficas de SASL.

.�Propiedades de Entorno Espec�ficas del Proveedor

Las propiedades de etorno espec�ficas del proveedor son propiedades que s�n usadas por un s�lo proveedor. Por ejemplo, el proveedor de servicios LDAP de Sun tiene una propiedad para activar el seguimiento. (ver el ejemplo de la lecci�n FAQ.) Una propiedad espec�fica del proveedor deber�a tener un prefijo que refleje su identidad �nica, normalmente el nombre del paquete del proveedor de servicio.

Por ejemplo, la propiedad de seguimiento del proveedor LDAP de Sun se llama "com.sun.jndi.ldap.trace.ber".

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO